import axios, {AxiosInstance,  AxiosResponse, AxiosError, InternalAxiosRequestConfig} from 'axios';

const instance: AxiosInstance = axios.create({
  baseURL: '/api', // 基础 URL
  timeout: 5000 // 请求超时时间
})
//请求拦截器
instance.interceptors.request.use(
  (config: InternalAxiosRequestConfig) => {
    return config
  },
  (error: AxiosError) => {
    // 处理请求错误
    console.error('Request error:', error)
    return Promise.reject(error)
  }
);


//响应拦截器
instance.interceptors.response.use(
  (response: AxiosResponse) => {
    // 处理成功的响应
    console.log('Response received:', response)
    return response.data
  },
  (error: AxiosError) => {
    // 处理响应错误
    if (error.response) {
      // 请求已发出，服务器返回了非2xx的状态码
      switch (error.response.status) {
        case 401:
          // 未授权
          console.error('Unauthorized:', error)
          break;
        case 403:
          // 禁止访问
          console.error('Forbidden:', error)
          break;
        default:
          console.error('Response error:', error)
      }
    } else if (error.request) {
      // 请求已发出，但没有收到响应
      console.error('No response received:', error.request)
    } else {
      // 设置请求时出错
      console.error('Error setting up request:', error.message)
    }
    return Promise.reject(error)
  }
)
export default instance
